package jgl.vajra.operator.part.vehicle.contract;

import java.util.Map;

import io.reactivex.Observable;
import jgl.vajra.operator.bean.OrderDetailsBean;
import jgl.vajra.operator.bean.OrderPaymentDetailsBean;
import jgl.vajra.operator.databinding.ActivityOrderDetailsBinding;
import jgl.vajra.operator.widget.mvvm.model.BaseModel;
import jgl.vajra.operator.widget.mvvm.view.BaseMVVMView;
import jgl.vajra.operator.widget.mvvm.viewmodel.BaseViewModel;

public class OrderDetailsContract {
    public abstract static class Model extends BaseModel {

        public abstract Observable<OrderPaymentDetailsBean> getOrderPaymentDetailsData(Map<String, Object> map);

        public abstract Observable<String> cancelOrder(Map<String, Object> map);

        public abstract Observable<OrderDetailsBean> getOrderDetailsData(Map<String, Object> map);

        public abstract Observable<OrderDetailsBean> getWorkingState(Map<String, Object> map);

        public abstract Observable<OrderDetailsBean> getStartData(Map<String, Object> map);
    }

    public interface View extends BaseMVVMView {

        void onConfirm();

        void onReposition();

        void onPolice(OrderPaymentDetailsBean data);

        void onCustomerService();

        void onShareOrder();

        void onCancelOrder();

        void onContactNo();

        void onChangeDriver();

        void onText();

        void onWaitingFee();

        void onStartTiming(OrderPaymentDetailsBean data);

        void onRest(OrderPaymentDetailsBean data);

        void returnOrderDetailsData(OrderDetailsBean data);

        void returnOrderPaymentDetailsData(OrderPaymentDetailsBean data);

        void returnCancelOrder();

        void returnStartData();
    }

    public abstract static class ViewModel extends BaseViewModel<View, ActivityOrderDetailsBinding, Model> {

        public abstract void getOrderPaymentDetailsData(Map<String, Object> map);

        public abstract void cancelOrder(Map<String, Object> map);

        public abstract void getOrderDetailsData(Map<String, Object> map);

        public abstract void getWorkingState(Map<String, Object> map);

        public abstract void getStartData(Map<String, Object> map);
    }
}
